;!(function(window){
var get,route;

	function getles(){
		this.arr=null;
		this.doc=window.document;
	}

	//获取#id
	getles.prototype.strId=function(le) {
		var regId=/^\#[a-z_-]+$/i;
		if(regId.test(le)){
			arr=le.split('#');
			return this.doc.getElementById(arr[1]);
		}
	};

	//获取id
	getles.prototype.Id=function(le){
		return this.doc.getElementById(le);
	};

	//获取.class
	getles.prototype.strClass=function(obj,le){
		var regClass=/^\.[a-z-_0-9]+$/i;
		if(regClass.test(le)){
			arr=le.split('.');
			var all=obj.getElementsByTagName('*'),
				les=all.length,
				lesArr=[];
			var reg=new RegExp('\\b'+arr[1]+'\\b','i');	
			for(var i=0; i<les; i++){
				if(reg.test(all[i].className)){
					lesArr.push(all[i]);
				}	
			}
			return lesArr;		
		}
	};

	//获取class
	getles.prototype.Class=function(le){
		var tagName=this.doc.getElementsByTagName('*'),
			tagNameLength=tagName.length,
			reg=new RegExp('\\b'+le+'\\b','i'),
			i=0,arr=[];
		for(i; i<tagNameLength; i++){
			if(reg.test(tagName[i].className)){
				arr.push(tagName[i]);
			}
		}
		return arr;
	};

	//获取name
	getles.prototype.tagName=function(le){
		return this.doc.getElementsByTagName(le);
	};

	//获取id name
	getles.prototype.strTagName=function(obj,le){
		return obj.getElementsByTagName(le);
	}

	get=new getles();

	window.route={
		$:function(str){
			var lesArr;
			//获取#id 
			if(/^\#[a-z_-]+$/i.test(str)){
				lesArr=str.split('#');
				return get.Id(lesArr[1]);
			}
			//获取.class
			if(/^\.[a-z-_0-9]+$/i.test(str)){
				lesArr=str.split('.');
				var all=get.Class(lesArr[1]);
					les=all.length;
					arr=[],
					reg=new RegExp('\\b'+lesArr[1]+'\\b','i');
				for(var i=0; i<les; i++){
					if(reg.test(all[i].className)){
						arr.push(all[i]);
					}	
				}
				return arr;	
			}
			//获取tagName
			if(/^[a-z]+$/i.test(str)){
				return get.tagName(str);
			}

			//获取#id .class
			if(/^\#[a-z_-]+\s\.[a-z-_0-9]+$/i.test(str)){
				lesArr=str.split(' ');
				var Id=get.strId(lesArr[0]);
				return get.strClass(Id,lesArr[1]);
			}

			//获取#id tagName
			if(/^\#[a-z_-]+\s[a-z]+$/i.test(str)){
				lesArr=str.split(' ');
				var Id=get.strId(lesArr[0]);
				return get.strTagName(Id,lesArr[1]);
			}
		},
		//设置行内样式
		css:function(les,data){
			for(var i in data){
				les.style[i]=data[i];
			}
		},
		//处理html
		html:function(les,info){
			return les.innerHTML=info;
		},
		//创建元素以及设置属性和值
		create:function(arr,data){
			var les=document.createElement(arr[0]);
			for(var i in data){
				les.setAttribute(i,data[i]);
			}
			return les;
		},
		//元素显示
		show:function(les){
			return les.style.display='block';
		},
		//元素隐藏
		hidden:function(les){
			return les.style.display='none';
		},
		//ajax
		ajax:function(data){
			function params(json){
				var arr=[];
				for(var i in json){
					arr.push(encodeURIComponent(i)+'='+encodeURIComponent(json[i]));
				}
			  	return arr.join('&');
			}
			var xhr=window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject('Microsoft.XMLHTTP'); 
			data.url=data.url+'?rand='+Math.random();
			data.data = params(data.data);
			if(data.method==='get'){
				data.url+=data.url.indexOf('?')==-1?'?'+data.data:'&'+data.data;
			}
			if(data.async===true){
				xhr.onreadystatechange=function(){
					if(xhr.readyState==4){
						callback();
					}
				};
			}
			xhr.open(data.method,data.url,data.async);
			if(data.method==='post'){
			xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded;charset=utf-8');
			xhr.send(data.data);		
			}else{
				xhr.send(null);
			}
			if(data.async===false){
				callback();
			}
			function callback(){
				xhr.status==200?data.success(xhr.responseText):data.error(xhr.status,xhr.statusText);
			};
		},
		setClass:function(les,className,url){
			for(var i=0; i<les.length; i++){
            	les[i].className='';
            	var href=les[i].getAttribute('href').split('/#/');
            	if(href[1] == url){
                	les[i].className=className;  
            	}
        	}
		},
		//处理路由
		url:function(arr,fn){
			if(('onhashchange' in window) && ((typeof document.documentMode==='undefined') || document.documentMode==8)){
   				window.onhashchange=Change; 
			}else{
  				setInterval(function(){
    				var ischanged=isHashChanged();
        			if(ischanged){
            			Change();  
        			}
    			},150);
			}
			function Change(){
				var hashArr=window.location.hash.split('#/'),
					arrLength=arr.length,
					i=0,urlArr;
				for(i; i<arrLength; i++){
					urlArr=arr[i].split('#/');
					if(urlArr[1] == hashArr[1]){
						fn(hashArr[1]);
					}
				}
			}	
		}
	};
})(window);
	

	

